package com.siwei.mes.service.system;

import com.github.pagehelper.PageInfo;
import com.siwei.mes.common.query.PageQuery;
import com.siwei.mes.entity.dto.SupplierCompanyDto;
import com.siwei.mes.entity.system.SupplierCompany;

import java.util.List;

/**
 * 供应商(SupplierCompany)表服务接口
 *
 * @author linzi
 * @since 2024-07-16 16:40:40
 */
public interface SupplierCompanyService {

    /**
     * 新增
     *
     * @param entity
     * @return
     */
    Long create(SupplierCompany entity);

    /**
     * 修改
     *
     * @param entity
     */
    void update(SupplierCompany entity);

    /**
     * 删除
     *
     * @param id
     */
    void delete(Long id);

    /**
     * 获取所有分组  分页
     *
     * @param query
     * @return
     */
    PageInfo<SupplierCompany> getPage(PageQuery<SupplierCompany, SupplierCompany> query);

    /**
     * 根据id查询
     *
     * @param id
     * @return
     */
    SupplierCompany loadById(Long id);

    /**
     * 这里根据erp的id查询
     *
     * @param ycId
     * @return
     */
    SupplierCompany loadByYCId(Long ycId);

    /**
     * 获取所有
     *
     * @param entity
     * @return
     */
    List<SupplierCompany> getAll(SupplierCompany entity);

    /**
     * 禁用/启动
     *
     * @param entity
     */
    void updateStatus(SupplierCompany entity);

    /**
     * 新增或修改供应商
     *
     * @param erpId       对应erp供应商id
     * @param companyName 单位名称
     * @return
     */
    SupplierCompany saveOrUpdate(Long erpId, String companyName);

    /**
     * 根据材料名称和规格获取对应材料所有的供应商信息
     *
     * @param materialsName 材料名称
     * @param materialsSpec 材料规格
     * @return
     */
    List<SupplierCompany> selectBySupplierCompanyList(String materialsName, String materialsSpec);

    /**
     * 根据物料名称和物料规格获取所有的供应商信息
     *
     * @param materialsName 材料名称
     * @param materialsSpec 材料规格
     * @return
     */
    List<SupplierCompany> selectByMaterialSupplierCompanyList(Integer materialsType,String materialsName, String materialsSpec);

    /**
     * 根据材料类型和材料名称获取所有的供应商信息
     *
     * @param materialsType 材料类型
     * @param materialsName 材料名称
     * @return
     */
    List<SupplierCompanyDto> selectBySupplierCompanyListByType(Integer materialsType,String materialsName);

}
